package solitaire.controle;

import java.awt.FlowLayout;
import java.io.Serializable;

import javax.swing.JFrame;

import solitaire.application.Carte;
import solitaire.presentation.PCarte;

/**
 * Controlleur de carte, faisant le lien entre les cartes du mod&egrave;le et leur affichage.
 * Les op&eacute;rations du mod&egrave;le sont surcharg&eacute;es pour y ajouter la mise &agrave; jour de la pr&eacute;sentation.
 * 
 * @author Andr&eacute; Simon, J&eacute;r&eacute;my Brault
 */
public class CCarte extends Carte implements Serializable {
	
	private static final long serialVersionUID = 2947368498660625678L;
	private PCarte presentation;

	/**
	 * Constructeur d'un controlleur de carte qui construit la carte, puis sa pr&eacute;sentation.
	 * 
	 * @see Carte#Carte(int, int)
	 */
	public CCarte(int valeur, int couleur) {
		super(valeur, couleur);
		presentation = new PCarte(valeurs[getValeur() - 1] + couleurs[getCouleur() -1 ], this);
		presentation.setFaceVisible(isFaceVisible());
	}

	@Override
	public void setFaceVisible(boolean visible) {
		super.setFaceVisible(visible);
		presentation.setFaceVisible(isFaceVisible());
	}
	
	/**
	 * @return {@link PCarte} la pr&eacute;sentation de la carte
	 */
	public PCarte getPresentation() {
		return presentation;
	}

	public static void main(String[] args) {
		CCarte cCarte = new CCarte(2,4);
		System.out.println(cCarte.toString());
		cCarte.setFaceVisible(true);
		System.out.println(cCarte.toString());
		
		CCarte cCarte2 = new CCarte(13,2);
		System.out.println(cCarte2.toString());
		cCarte2.setFaceVisible(true);
		System.out.println(cCarte2.toString());
		
		JFrame fenetre = new JFrame("Test CCarte");
		fenetre.setLayout(new FlowLayout());
		fenetre.getContentPane().add(cCarte.presentation);
		fenetre.getContentPane().add(cCarte2.presentation);
		
		cCarte.setFaceVisible(false);
		
		fenetre.setVisible(true);
		fenetre.setBounds(100, 100, 300, 300);
		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
}
